/**
 * ____________________ *
 *  ____ ____ ____ _  _ *
 *  |___ [__] |--< |\/| *
 * ____________________ *
 *
 * THE CORM PROJECT
 *
 * This file may only be used in accordance with the
 * terms of the Academic Free License ("AFL") v. 3.0,
 * as published by the Open Software Initiative.  A
 * copy of this license is provided in this source
 * release, and may be viewed online at:
 *
 * (http://www.opensource.org/licenses/afl-3.0.php)
 */
package org.eremite.corm.crm;

import org.eremite.corm.BaseArchetype;
import org.eremite.corm.party.PartySignature;

import java.util.Date;
import java.util.Set;

public class Action extends BaseArchetype {
    public final static int PENDING = 0;
    public final static int OPEN = 1;
    public final static int CLOSED = 2;

    private String reason;
    private Date startTime;
    private Date endTime;
    private int status;
    private PartySignature actionInitiator;
    private Set<PartySignature> approvers;
    private Set<Outcome> possibleOutcomes;
    private Set<Outcome> actualOutcomes;

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public PartySignature getActionInitiator() {
        return actionInitiator;
    }

    public void setActionInitiator(PartySignature actionInitiator) {
        this.actionInitiator = actionInitiator;
    }

    public Set<PartySignature> getApprovers() {
        return approvers;
    }

    public void setApprovers(Set<PartySignature> approvers) {
        this.approvers = approvers;
    }

    public Set<Outcome> getPossibleOutcomes() {
        return possibleOutcomes;
    }

    public void setPossibleOutcomes(Set<Outcome> possibleOutcomes) {
        this.possibleOutcomes = possibleOutcomes;
    }

    public Set<Outcome> getActualOutcomes() {
        return actualOutcomes;
    }

    public void setActualOutcomes(Set<Outcome> actualOutcomes) {
        this.actualOutcomes = actualOutcomes;
    }
}
